character controllers explained